#include "zarovizsga.h"
#include <iostream>
#include <cstdlib>
#include <time.h>
#include <windows.h>
#include <fstream>
#include "menu.h"

using namespace std;

Zarovizsga::Zarovizsga()
{
    ifstream infile;
    string filename="zarovizsga/tetelek.txt";
    infile.open(filename.c_str());

    while(!infile.eof())
    {
        string seged;
        infile>>seged;
        szavak.push_back(seged);
    }

    infile.close();

    jegy=1;
    ideiglenes.resize(0);

}
void Zarovizsga::SetJegy(int m)
{
    jegy=m;
}
bool Zarovizsga::felad(Player& player)
{
    bool l=false;
    system("cls");
    char valasz;

    switch(jegy)
    {
    case 1:

        cout<<endl<<"Biztos beiratod az egyest? En ezert nem kuzdottem volna magam vegig ezen a borzalmon..."<<endl;
        valasz=GetIorN();
        if(valasz=='i')
        {
            VegeEgyes();
            l=true;
        }
        else
        {
            cout<<endl<<"Na azert"<<endl;
        }
        break;
    case 2:
        cout<<endl<<"Biztos beiratod a kettest? Ennel azert jobbat is tudsz"<<endl;
        valasz=GetIorN();
        if(valasz=='i')
        {
            VegeKettes();
            l=true;
        }
        else
        {
            cout<<endl<<"Na azert!"<<endl;
        }
        break;

    case 3:
        cout<<endl<<"Biztos beiratod a harmast? En annyira atlagos jegy..."<<endl;
        valasz=GetIorN();
        if(valasz=='i')
        {
            VegeHarmas();
            l=true;
        }
        else
        {
            cout<<endl<<"Na azert"<<endl;
        }
        break;

    case 4:

        cout<<endl<<"Biztos beiratod a negyest? Annyira kozel van mar az otos!!!!"<<endl;
        valasz=GetIorN();
        if(valasz=='i')
        {
            VegeNegyes();
            l=true;
        }
        else
        {
            cout<<endl<<"Na azert"<<endl;
        }
        break;

    case 5:

        VegeOtos();
        l=true;
        break;


    }

    cout<<endl;
    system("pause");
    cout<<endl;

    return l;

}
void Zarovizsga::zarovizsgazik(Player& player)
{

    bool bukta=false;


        system("cls");
        switch(jegy)
        {
        case 1:
            cout<<"Udvozoljuk a zarovizsgan.Tisztban van a szabalyokkal?"<<endl;
            char valasz;
            valasz=GetIorN();
            if(valasz=='i')
            {
                cout<<"Akkor vagjunk is bele!"<<endl;
            }
            else
            {
                cout<<endl;
                cout<<"A feladatod, hogy a kovetkezo szavakat mind megjegyezd 30 mp alatt es minel tobbet visszamondj.";
                cout<<" Ha teljesitesz egy szintet, akkor a jobb osztalyzatod be van biztositva es lehet probalkozni a kovetkezo szinttel.";
                cout<<" Ugyanazt a szot nem fogadjuk el tobbszor es csak annyi lehetoseged van ahany szot meg kellett jegyezni."<<endl;
                cout<<endl;
            }
            feladat(player,2,bukta);
            break;
        case 2:
            cout<<"Na akkor lassuk megy-e a harmas"<<endl;
            feladat(player,3,bukta);
            break;
        case 3:
            cout<<"Probalkozzunk meg azzal a negyessel"<<endl;
            feladat(player,4,bukta);
            break;
        case 4:
            cout<<"Az otos meg soha senkinek nem sikerult. Lassuk on megtori-e ezt az atkot"<<endl;
            feladat(player,5,bukta);
        case 5:
            cout<<endl<<"Mar megvan az otosod. Menjen beiratni!"<<endl;
            break;
        }



}
void Zarovizsga::feladat(Player& player,int hanyasert,bool &bukas)
{
    ideiglenes.resize(0);
    string egyes[hanyasert*3];
    vector<int> seged;
    seged.resize(0);
    int random;

    cout<<"\n\t\tA kovetkezo szavakat kell megjegyezned:"<<endl<<endl;

    for(int i = 0; i<hanyasert*3; ++i)
    {

        do
        {
            srand ( time(NULL) );

            random=rand();
            random=rand() % szavak.size();
        }
        while(bennevan(random,seged));

        seged.push_back(random);
        egyes[i]=szavak[random];
        cout<<"\t\t"<<egyes[i]<<endl;
    }
    cout<<endl<<"Indul a 30 mp. Ennyi idod van megjegyezni a szavakat."<<endl;
    Sleep(5000);
    cout<<endl<<"Meg 15 mp";
    Sleep(5000);
    cout<<endl<<"Meg 10 mp";
    Sleep(5000);
    cout<<endl<<"Meg 5 mp";
    Sleep(5000);

    system("cls");
    cout<<endl<<endl<<"Na akkor lassuk emlekszik e mindre!"<<endl;

    int jovalasz = 0;
    for(int i = 0; i<hanyasert*3; ++i)
    {
        string valasz;
        cout<<i+1<<".: ";
        cin>>valasz;
        if(bennevan(valasz,egyes,hanyasert*3))
        {
            jovalasz=jovalasz+1;
            cout<<"\t\t(+)"<<endl;
        }
        else
        {
            cout<<"\t\t(-)"<<endl;
        }
    }

    if(jovalasz>=(hanyasert*2))
    {
        cout<<"Grat megvan a "<<hanyasert<<"osztalyzatod";
        jegy=jegy+1;
    }
    else
    {
        cout<<"Sajna megbuktal. Varunk vissza ha eleg turelmet gyujtottel";
        player.SetTurelem(50);
        bukas=true;
    }

    cout<<endl;
    system("pause");
    cout<<endl;


}
bool Zarovizsga::bennevan(int szam,vector<int> a)
{
    for(unsigned int i=0; i<a.size(); ++i)
    {
        if(a[i]==szam)
        {
            return true;
        }
    }

    return false;
}
bool Zarovizsga::bennevan(string szo,string tomb[],int meret)
{
    for(int i=0; i<meret; ++i)
    {
        if(tomb[i]==szo)
        {
            for(unsigned int j=0; j<ideiglenes.size(); ++j)
            {
                if(ideiglenes[j]==szo)
                {
                    return false;
                }
            }
            ideiglenes.push_back(szo);
            return true;
        }
    }

    return false;
}
